/**
 * 找到两个相交的单链表的起始节点
 * @param {ListNode} headA 
 * @param {ListNode} headB 
 * A走到尽头后从B开始走，同理B走到尽头后从A开始走，直到两个指针相等，始终不相等说明链表没有交点
 * 设A到交点长sa，B到交点长sb，公共部分长sc，则相交时A走的路程=sa+sc+sb,B走的路程=sb+sc+sa
 */
var getIntersectionNode = function (headA, headB) {
    let n1 = headA
    let n2 = headB
    while (n1 !== n2) {
        if (n1 === null) {
            n1 = headB
        } else {
            n1 = n1.next
        }

        if (n2 === null) {
            n2 = headA
        } else {
            n2 = n2.next
        }
    }
    
    // 若链表没有交点，循环会在n1=n2=null时跳出
    return n1
}